#include "Simulateur.hpp"
#include "IntUtils.hpp"

Simulateur::Simulateur(string fileUrl)
{
	_p = new Parser(fileUrl);
	_lesTachesAperiodique = _p->getTachesAperiodiques();
	_lesTachesPeriodiques = _p->getTachesPerdiodiques();
}

Simulateur::~Simulateur()
{}

bool Simulateur::isSchedulable(politique::periodique politiqueP,politique::aperiodique politiqueA)
{
	/*
	if(politiqueP==RM)
		return RM::isSchedulable(p->getTaches());
	if(politiqueP==EDF)
		return EDF::isSchedulable(p->getTaches());

	if(politiqueA==BG)
		return BG::isSchedulable(p->getTaches());
	if(politiqueA==TBS)
		return TBS::isSchedulable(p->getTaches());*/
}

bool Simulateur::doSchedule(politique::periodique politiqueP,politique::aperiodique politiqueA)
{
	/*
	if(politiqueP==RM)
		return RM::doSchedule(p->getTaches());
	if(politiqueP==EDF)
		return EDF::doSchedule(p->getTaches());

	if(politiqueA==BG)
		return BG::doSchedule(p->getTaches());
	if(politiqueA==TBS)
		return TBS::doSchedule(p->getTaches());*/
}

int Simulateur::getHyperPeriod()
{
	int res2 = 0, res1 = 0;
	for(int i=0;i<_lesTachesPeriodiques.size()-1;i++)
	{
		res1 = IntUtils::ppcm(_lesTachesPeriodiques.at(i).getPi(),_lesTachesPeriodiques.at(i+1).getPi() );
	}

	for (int i=0;i<_lesTachesAperiodique.size();i++)
	{
		res2+=_lesTachesAperiodique.at(i).getCi();
	}
	return res2/res1;
}